代码如下:
#include "test.h"
#include <iostream>
int main()
{
std::cout << inclued_static_m::getStic().getValue1() << std::endl; //输出value1的值 10
inclued_static_m::getStic().setValue1(11); //设置value1的值 11
std::cout << inclued_static_m::getStic().getValue1() << std::endl; //此处输出value1的值 仍然为10,为什么不是 11?
return 0;
}
#pragma once
class static_m
{
public:
static_m();
~static_m();
void setValue1(int a);
int getValue1();
private:
int value1;
};
static_m::static_m()
{
value1 = 10;
}
static_m::~static_m()
{
}
inline void static_m::setValue1(int a)
{
value1 = a;
}
inline int static_m::getValue1()
{
return value1;
}
class inclued_static_m
{
public:
inclued_static_m();
~inclued_static_m();
static static_m getStic();
private:
static static_m m_SSSS;
};
static_m inclued_static_m::m_SSSS;
inclued_static_m::inclued_static_m()
{
}
inclued_static_m::~inclued_static_m()
{
}
inline static_m inclued_static_m::getStic()
{
return m_SSSS;
}
但是如果赋值操作就复杂多了:
String &String::operator =( const char *str ) …{
if( !str ) str = “”“”;
char *tmp = strcpy( new char[ strlen(str)+1 ], str ); // 多了中间变量
delete [] s_; // 多了删除s_;
s_ = tmp; // 多一个赋值操作!现在是指向字符的指针,如果是个大对象,效率的差别可想而知.
return *this;
}
7. Boost的assign库做了许多有益的工作。使用assign库,至少现在可以初始化了:
但是如果赋值操作就复杂多了:
String &String::operator =( const char *str ) …{
if( !str ) str = “”“”;
char *tmp = strcpy( new char[ strlen(str)+1 ], str ); // 多了中间变量
delete [] s_; // 多了删除s_;
s_ = tmp; // 多一个赋值操作!现在是指向字符的指针,如果是个大对象,效率的差别可想而知.
return *this;
}
7. Boost的assign库做了许多有益的工作。使用assign库,至少现在可以初始化了:
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html