标签: const-cast

转换const将它传递给需要引用的函数,会发生什么?

任何人都可以告诉我在主要传递给g时会发生什么,是static_cast吗?

int  & g (int&x){x++ ; return x ; } 
int main()
{

   const int a=5 ; 
   cout<<g((int&)a)<<endl; 
}
Run Code Online (Sandbox Code Playgroud)

我确信没有复制,因为上面的代码类似于下面的代码:

class A
{
public:
    A()
    {
        cout << "calling DEFAULT constructor\n\n";
    }
    A(A& Other)
    {
        cout << "Calling COPY constructor\n\n";
    }
    ~A()
    {
        cout << "Calling DESTRUCTOR\n\n";
    }
};

A& g(A& x)
{
    cout << "Inside g(A& x) \n\n";
    return x;
}

void main()
{
    const A a;
    g(const_cast<A&>(a));
}*/
Run Code Online (Sandbox Code Playgroud)

提前致谢 :)

c++ casting parameter-passing const-cast

0
推荐指数
1
解决办法
304
查看次数

模板中的隐式const转换

我遇到类似于下面的代码片段,它会抛出编译器错误,因为它使用了一个const_iterator.是有一个原因vec.end()std::copy不会隐获得const投?

int main(int argc, char* argv[]) {

    vector<int> vec;
    vec.push_back(20);
    vec.push_back(30);
    vector<int> copy_vec;
    vector<int>::const_iterator i = vec.begin();
    std::copy(i,vec.end(),back_inserter(copy_vec));
    cerr<<copy_vec.size()<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ const-cast

0
推荐指数
1
解决办法
306
查看次数

关于const_cast <>的行为

我写了一个小问题来检查const数据成员上const_cast的行为.

using namespace std;


     class myString{
         public:
                 myString(char * str)
                 {
                         p=str;
                 }
                 const char * getString(){
                         return p;
                 }
         private:
                 const char *p;
 } ;


int main()
{
        char *p=(char*)malloc(8);
        cin>>p;
        myString *m= new myString(p);
        char *s =const_cast<char*>(m->getString());
        s[6]='y';
        cout<<s<<endl;
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

运行此程序后,我将其作为"yogendra"(8个字母的字符串).我把输出称为"yogendya"现在我怀疑了.通过const_cast <>我们可以覆盖数据成员本身的行为,因为这里的字符串是const char*仍然在转换后我可以修改它.

c++ const-cast

0
推荐指数
1
解决办法
191
查看次数

const_cast在c ++中失败

CallingClass::CallingFunc()
{
    SomeClass obj;
    obj.Construct(*Singleton::GetInstance()); // passing the listener
    // Singleton::GetInstance() returns a static pointer.
    //Singleton is derived from IListener
}

SomeClass::Construct(const IListener &listener)
{
    IListener* pListener = const_cast<IListener*>(&listener);
}
Run Code Online (Sandbox Code Playgroud)

之后const_cast pListener为null.有可能执行这样的类型转换吗?

谢谢

c++ const-cast

-2
推荐指数
1
解决办法
1112
查看次数

标签 统计

c++ ×4

const-cast ×4

casting ×1

parameter-passing ×1