一些C++语法

本文深入探讨了C++中的临时对象生成与管理、静态常量成员的直接初始化、递增递减操作符重载、前闭后开区间表示法及函数调用操作符的重载等高级主题,为读者提供了理解和运用这些特性来优化代码和提高编程效率的指导。

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

目录

 

1.  临时对象的产生和运用

2.  静态常量整数成员在class内部直接初始化

3.  递增、递减、取值 操作符

4.  前闭后开区间表示法 [first,last)

5.  可以重载函数调用 操作符 ( operator() )


1.  临时对象的产生和运用

C++中所谓的临时对象是不可见的。只要产生一个non-heap对象,而且没有为它命名,便产生了一个临时对象。

临时对象通常发生于在:1.  当函数参数是按值传递时,会产生复制操作,产生临时对象。

                                        2.  当发生隐式类型转换时,如const int & ci = 3.14;

                                        3.  当函数返回对象的时候。

                                        4.  刻意制造临时对象。int(8),shape(3,5);

临时对象的销毁: 1.  一般临时对象的有效生存周期为当前表达式。该表达式结束后,临时对象被销毁。

                              2.  当临时对象被引用后,直到引用被销毁后,临时对象被销毁。

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

template<typename T>
class print{
public:
    void operator()(const T& elem)
        {    cout<<elem<<' ';}
};

int main()
{
    int ia[6]={1,2,3,4,5,6};
    vector<int> iv(ia,ia+6);
    
    //print<int>() 为临时对象
    for_each(iv.begin(),iv.end(),print<int>() );

    return 0;
}

2.  静态常量整数成员在class内部直接初始化

当class中含有静态常量整型成员,那么我们可以再class中直接赋予其初值。

template<typename T>
class testClass{
public:
    static const int i=5; 
    static const long li=15L;
    static const char c = 'c';

}

3.  递增、递减、取值 操作符

在递增和递减的操作中还分为前置式和后置式两种。

#include<iostream>
using namespace std;

class INT{
	friend ostream& operator<<(ostream &os,const INT &i);

public:
	INT(int i):m_i(i){}

	INT & operator++ ()
	{
		++(this->m_i);
		return *this;
	}

	const INT operator++ (int)
	{
		INT temp = *this;
		++(*this);
		return temp;
	}

	INT & operator-- ()
	{
		--(this->m_i);
		return *this;
	}

	const INT operator-- (int)
	{
		INT temp = *this;
		--(*this);
		return temp;
	}

	int & operator*()const{
		return (int&)m_i;
	}

private:
	int m_i;
};

ostream& operator<<(ostream &os,const INT & i)
{
	os<<'['<<i.m_i<<']'<<endl;
	return os;
}

int main()
{
	INT I(5);
	cout<<I++;
	cout<<++I;
	cout<<I--;
	cout<<--I;
	cout<<*I;
	return 0;
}

4.  前闭后开区间表示法 [first,last)

任何一个STL算法,都需要获得由一对迭代器所标示的区间,用以表示操作范围。

这一对迭代器所标示的是个所谓的前闭后开区间,以[first,last)表示。整个实际范围从first开始,到last-1结束。

5.  可以重载函数调用 操作符 ( operator() )

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值