从C#重返C++学习过程总结

本文总结了作者从C#转到C++学习的经验,重点探讨了C++中的类、内联函数、双冒号作用以及new和delete运算符的用法。类的设计强调在成员定义时使用访问修饰符,并介绍构造函数的默认行为。内联函数用于减少调用开销,替代C中的宏。双冒号用作域操作符,用于明确成员函数归属和访问基类成员。new和delete则涉及动态内存管理和对象的创建与释放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.类
类在设计时前面没有访问修饰符,统一为Class;类的成员定义时(包括函数成员,数据成员),才使用访问修饰符;而且是分类放置,比如,

class Test
{
 
public:
   
void Function1(int x);
 
private:
   
string sText;
   
int x;
}


类中函数实现是在类的外面实现的(下面讲的隐式内联函数可放在内部),与普通函数不同的是在实现函数时要指明类的名称:

void Test::Function1(int x)
{
}

类中成员函数可以带默认形参值:

void Test::Function1(int x=500)
{
}

构造函数:如果没有定义构造函数,编译系统会在编译时自动生成一个默认形式的构造函数,它不做任何事情.

2.内联函数
内联函数就是小型函数,牺牲空间来节省函数调用的开销,一般用作比较小的函数,即函数内部没有循环、开关语句等。内联函数被发明出来

就是为了取代C中的宏,因为宏是单纯的替换而没有类型检查所以经常出毛病
隐式声明:将函数体直接放在类主体中
显示声明:函数体实现时加上inline,如:

inline void Clock::ShowTime()
{
}

3.双冒号::
在C++里的,::是“域操作符”。比如声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时,就要写成void A::f(),表示这个f()函数是类A的成员函数。

::另外的用法: 在派生类中覆盖基类同名成员时,使用::可以访问已经被覆盖了的基类的同名成员(public),如:obj.Class1::Function1();

::另外的用法: 就是直接用在全局函数前,表示是全局函数。比如在VC里,你可以在调用API函数里,在API函数名前加::。

4.new 和 delete
在C++中,new和delete是建立和删除堆对象的两个运算符
new 动态分配内存,或称动态创建堆对象,格式:new 类型名 (初始列表)
a.建立普通对象就是赋值操作
如: int *point;
point = new int(2); 表示动态分配了用于存放int类型数据的空间,并把初始值2放入该空间,然后将首地址赋值给指针point
b.建立对象是类的一个实例对象,根据实际情况调用构造函数.用delete来删除new来创建的对象,释放指针所指向的内存空间.
如:

class Point
{
public
 Point()
 
{ X=Y=0; cout<<"调用默认构造函数Point()"<<endl; }
 Point(
int xx,int yy)
 
{ X=xx; Y=yy; cout<<"调用有参构造函数Point(int xx,int yy)"<<endl; }
 
~Point()
 
{ cout<<"Destroy Point()"<<endl; }
 
int GetX()
 
return X; }
 
int GetY()
 
return Y; } 
private:
 
int X,Y;
}
;

void main()
{
Point 
*point1=new Point;//没有给出初始值,因此调用默认构造函数
delete point1;//删除对象,自动调用~Point()
point1=new Point(1,2);//调用有参构造函数
delete point1;
}


/* //输出结果
调用默认构造函数Point()
Destroy Point()
调用有参构造函数Point(int xx,int yy)
Destroy Point()
Press any key to continue
*/
 
c.创建数组对象
 ......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值