2种C++类实例化的区别

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:49:05
#include <iostream>
using namespace std;
////////////////////例1:
class OneClass
{
public:
OneClass();{ ++sum;};
~OneClass();{ };
static int Show(){ cout<<sum<<endl; };

private:
static int sum;
};
int OneClass::sum = 0;

int main()
{
OneClass obj;
OneClass::Show();
}

///////////////////////例2:
class OneClass
{
public:
OneClass();{ ++sum;}; //{}是必须加的吗?不加{}有什么不同?
~OneClass();{ };
static int Show(){ cout<<sum<<endl; };

private:
static int sum;
};
int OneClass::sum = 0;

int main()
{
OneClass obj(); //有没有()有什么不同?带有()是不报错的。
OneClass::Show();
}

//谢谢!
//带有()时,sum值没有被计算,也就是没有执行{++sum;},原因不详

第一个必须加{},花括号内代表函数体,你这个就是构造函数

那个括号带不带还是有区别的,你可以试着在构造函数写个输出printf,你会发现带括号的话不会调用构造函数,我觉得根本就没有创建这个对象

编译器会有很多时候不报错的,但是不一定正确

你写的有好多语法错误,都是最最基础的东西!
我给你改了一下
好好学习吧……
你提的问题:1.那是函数实现啊 ,默认构造函数的实现啊
2.不能加()的 C++中用 int b(5)表示赋值的意思,不能加()

#include <iostream>
using namespace std;
////////////////////例1:
class OneClass
{
public:
OneClass() { ++sum;}
~OneClass() { }
static void Show(){ cout<<sum<<endl; }

private:
static int sum;
};
int OneClass::sum = 0;

void main()
{
OneClass obj;
obj.Show();
}
//---------------------------------------------------------
#include <iostream>
using namespace std;
class OneClass
{
public:
OneClass(){ ++sum;} //{}是必须加的吗?不加{}有什么不同?
~OneClass(){ }
static void Show(){ cout<<sum<<endl; }
OneClass(OneClass &re